home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 10 / AACD 10.iso / AACD / Games / MAME / src / vidhrdw / blockhl.c < prev    next >
C/C++ Source or Header  |  2000-01-09  |  2KB  |  81 lines

  1. #include "driver.h"
  2. #include "vidhrdw/konamiic.h"
  3.  
  4.  
  5.  
  6. static int layer_colorbase[3],sprite_colorbase;
  7.  
  8. /***************************************************************************
  9.  
  10.   Callbacks for the K052109
  11.  
  12. ***************************************************************************/
  13.  
  14. static void tile_callback(int layer,int bank,int *code,int *color)
  15. {
  16.     *code |= ((*color & 0x0f) << 8);
  17.     *color = layer_colorbase[layer] + ((*color & 0xe0) >> 5);
  18. }
  19.  
  20. /***************************************************************************
  21.  
  22.   Callbacks for the K051960
  23.  
  24. ***************************************************************************/
  25.  
  26. static void sprite_callback(int *code,int *color,int *priority)
  27. {
  28.     *priority = (*color & 0x10) >> 4;
  29.     *color = sprite_colorbase + (*color & 0x0f);
  30. }
  31.  
  32.  
  33. /***************************************************************************
  34.  
  35.     Start the video hardware emulation.
  36.  
  37. ***************************************************************************/
  38.  
  39. int blockhl_vh_start(void)
  40. {
  41.     layer_colorbase[0] = 0;
  42.     layer_colorbase[1] = 16;
  43.     layer_colorbase[2] = 32;
  44.     sprite_colorbase = 48;
  45.  
  46.     if (K052109_vh_start(REGION_GFX1,NORMAL_PLANE_ORDER,tile_callback))
  47.         return 1;
  48.     if (K051960_vh_start(REGION_GFX2,NORMAL_PLANE_ORDER,sprite_callback))
  49.     {
  50.         K052109_vh_stop();
  51.         return 1;
  52.     }
  53.  
  54.     return 0;
  55. }
  56.  
  57. void blockhl_vh_stop(void)
  58. {
  59.     K052109_vh_stop();
  60.     K051960_vh_stop();
  61. }
  62.  
  63.  
  64. void blockhl_vh_screenrefresh(struct osd_bitmap *bitmap,int full_refresh)
  65. {
  66.     K052109_tilemap_update();
  67.  
  68.     palette_init_used_colors();
  69.     K051960_mark_sprites_colors();
  70.     if (palette_recalc())
  71.         tilemap_mark_all_pixels_dirty(ALL_TILEMAPS);
  72.  
  73.     tilemap_render(ALL_TILEMAPS);
  74.  
  75.     K052109_tilemap_draw(bitmap,2,TILEMAP_IGNORE_TRANSPARENCY);
  76.     K051960_sprites_draw(bitmap,1,1);
  77.     K052109_tilemap_draw(bitmap,1,0);
  78.     K051960_sprites_draw(bitmap,0,0);
  79.     K052109_tilemap_draw(bitmap,0,0);
  80. }
  81.